diff --git a/system/core/Compat.php b/system/core/Compat.php
deleted file mode 100644
index bd11b98..0000000
--- a/system/core/Compat.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
-/**
- * CodeIgniter
- *
- * An open source application development framework for PHP 4.3.2 or newer
- *
- * @package		CodeIgniter
- * @author		ExpressionEngine Dev Team
- * @copyright	Copyright (c) 2008 - 2010, EllisLab, Inc.
- * @license		http://codeigniter.com/user_guide/license.html
- * @link		http://codeigniter.com
- * @since		Version 1.0
- * @filesource
- */
-
-// ------------------------------------------------------------------------
-
-/**
- * Compatibility Functions
- *
- * Function overrides for older versions of PHP or PHP environments missing
- * certain extensions / libraries
- *
- * @package		CodeIgniter
- * @subpackage	codeigniter
- * @category	Compatibility Functions
- * @author		ExpressionEngine Dev Team
- * @link		http://codeigniter.com/user_guide/
- */
-
-// ------------------------------------------------------------------------
-
-/*
- * PHP versions prior to 5.0 don't support the E_STRICT constant
- * so we need to explicitly define it otherwise the Exception class
- * will generate errors when running under PHP 4
- * @PHP4
- *
- */
-if ( ! defined('E_STRICT'))
-{
-	define('E_STRICT', 2048);
-}
-
-/**
- * ctype_digit()
- *
- * Determines if a string is comprised only of digits
- * http://us.php.net/manual/en/function.ctype_digit.php
- * @PHP4
- *
- * @access	public
- * @param	string
- * @return	bool
- */
-if ( ! function_exists('ctype_digit'))
-{
-	function ctype_digit($str)
-	{
-		if ( ! is_string($str) OR $str == '')
-		{
-			return FALSE;
-		}
-
-		return ! preg_match('/[^0-9]/', $str);
-	}
-}
-
-// --------------------------------------------------------------------
-
-/**
- * ctype_alnum()
- *
- * Determines if a string is comprised of only alphanumeric characters
- * http://us.php.net/manual/en/function.ctype-alnum.php
- * @PHP4
- *
- * @access	public
- * @param	string
- * @return	bool
- */
-if ( ! function_exists('ctype_alnum'))
-{
-	function ctype_alnum($str)
-	{
-		if ( ! is_string($str) OR $str == '')
-		{
-			return FALSE;
-		}
-
-		return ! preg_match('/[^0-9a-z]/i', $str);
-	}
-}
-
-// --------------------------------------------------------------------
-
-
-/* End of file Compat.php */
-/* Location: ./system/core/Compat.php */
\ No newline at end of file
